package com.taotao.portal.service.impl;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import com.taotao.common.CookieUtils;
import com.taotao.common.HttpClientUtil;
import com.taotao.common.JsonUtils;
import com.taotao.common.TaotaoResult;
import com.taotao.pojo.TbItem;
import com.taotao.portal.pojo.CartItem;
import com.taotao.portal.service.CartService;
@Service
public class CartServiceImpl implements CartService {
	@Value("${REST_BASE_PATH}")
	private String REST_BASE_PATH;
	@Value("${ITEM_INFO}")
	private String ITEM_INFO;
	
	//购物车商品添加
	@Override
	public TaotaoResult addCartItem(long itemId, int num, HttpServletRequest request, HttpServletResponse response) {
		CartItem cartItem=null;
		List<CartItem> cartItemList = getCartItemList(request);
		for (CartItem cartItem2 : cartItemList) {
			if(itemId==cartItem2.getId()){
				cartItem=cartItem2;
				cartItem.setNum(cartItem.getNum()+num);
				break;
			}
		}
		if(cartItem==null){
			String json = HttpClientUtil.doGet(REST_BASE_PATH+ITEM_INFO+itemId);
			cartItem=new CartItem();
			if(!StringUtils.isBlank(json)){
				TaotaoResult result=TaotaoResult.formatToPojo(json, TbItem.class);
				if(result.getStatus()==200){
					TbItem item=(TbItem) result.getData();
					cartItem.setId(item.getId());
					cartItem.setImage(item.getImage()==null?"":item.getImage().split(",")[0]);
					cartItem.setNum(num);
					cartItem.setPrice(item.getPrice());
					cartItem.setTitle(item.getTitle());
				}
				cartItemList.add(cartItem);
			}
		}
		CookieUtils.setCookie(request, response, "TT_CART", JsonUtils.objectToJson(cartItemList), true);
		return TaotaoResult.ok();
	}
	
	public List<CartItem> getCartItemList(HttpServletRequest request){
		String cartJson=CookieUtils.getCookieValue(request, "TT_CART", true);
		if(cartJson==null){
			return new ArrayList<>();
		}
		try {
			List<CartItem> list = JsonUtils.jsonToList(cartJson, CartItem.class);
			return list;
		} catch (Exception e) {
			e.printStackTrace();
		}
		return new ArrayList<>();
	}
	
	//查询购物车商品
	@Override
	public List<CartItem> getCartItemList(HttpServletRequest request, HttpServletResponse response) {
		List<CartItem> list=getCartItemList(request);
		return list;
	}
	
	//删除购物车商品
	@Override
	public TaotaoResult deleteCartItem(long itemId, HttpServletRequest request, HttpServletResponse response) {
		List<CartItem> cartItemList=getCartItemList(request);
		for (CartItem cartItem : cartItemList) {
			if(cartItem.getId()==itemId){
				cartItemList.remove(cartItem);
				break;
			}
		}
		CookieUtils.setCookie(request, response, "TT_CART", JsonUtils.objectToJson(cartItemList), true);
		return TaotaoResult.ok();
	}
}
